package principal;

import tsb.sax.ErrorHandlerModel;
import tsb.sax.SAXException;

/**
 *
 * Implentacion del error
 */
public class ErrorHandler implements ErrorHandlerModel {

    public void errorFatal(SAXException ex) throws SAXException {
        String titulo = "ERROR FATAL";
        String msg = ex.getMessage();
        String stk = this.ConvertirStakTraceAString(ex);
        this.printConsola(titulo + ": ", msg, stk);
    }

    public void error(SAXException ex) throws SAXException {
        String titulo = "ERROR";
        String msg = ex.getMessage();
        String stk = this.ConvertirStakTraceAString(ex);
        this.printConsola(titulo + ": ", msg, stk);
    }

    public void warning(SAXException ex) throws SAXException {
        String titulo = "WARNING";
        String msg = ex.getMessage();
        String stk = this.ConvertirStakTraceAString(ex);
        this.printConsola(titulo + ": ", msg, stk);
    }

   private String ConvertirStakTraceAString(SAXException ex) {
        StackTraceElement[] stk = ex.getStackTrace();
        String resultado = "";

        for (int i = 0; i < stk.length; i++) {
            StackTraceElement stackTraceElement = stk[i];
            resultado += "\n" + stackTraceElement.toString();
        }
        
        return resultado;
    }

   private void printConsola(String tipo, String msg, String stkTrace) {
        String mensaje = tipo + "\n\t";
        mensaje += msg;
        System.err.println(mensaje + "\n" + stkTrace);
    }
}
